home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Technotools
/
Technotools (Chestnut CD-ROM)(1993).ISO
/
lang_oth
/
mawk10
/
fpe_test.bat
< prev
next >
Wrap
DOS Batch File
|
1991-10-05
|
2KB
|
130 lines
echo off
rem tests if mawk has been compiled to correctly handle
rem floating point exceptions
echo testing division by zero
type fpetest1.awk
mawk -f fpetest1.awk
if errorlevel 128 goto :test1_128
if errorlevel 3 goto :test1_3
if errorlevel 2 goto :test1_2
if errorlevel 1 goto :test1_1
set ret1=0
goto :test2
:test1_128
set ret1=128
goto :test2
:test1_3
set ret1=3
goto :test2
:test1_2
set ret1=2
goto :test2
:test1_1
set ret1=1
:test2
echo testing overflow
type fpetest2.awk
mawk -f fpetest2.awk
if errorlevel 128 goto :test2_128
if errorlevel 3 goto :test2_3
if errorlevel 2 goto :test2_2
if errorlevel 1 goto :test2_1
set ret2=0
goto :test3
:test2_128
set ret2=128
goto :test3
:test2_3
set ret2=3
goto :test3
:test2_2
set ret2=2
goto :test3
:test2_1
set ret2=1
:test3
echo testing domain error
type fpetest3.awk
mawk -f fpetest3.awk > temp$$
if errorlevel 128 goto :test3_128
if errorlevel 3 goto :test3_3
if errorlevel 2 goto :test3_2
if errorlevel 1 goto :test3_1
set ret3=0
goto :type3
:test3_128
set ret3=128
goto :type3
:test3_3
set ret3=3
goto :type3
:test3_2
set ret3=2
goto :type3
:test3_1
set ret3=1
:type3
type temp$$
rem the returns should all be zero or all 1
echo *************************************
echo return1 = %ret1%
echo return2 = %ret2%
echo return3 = %ret3%
set exception=0
if %ret1% == 1 goto :okay1
if %ret1% == 0 goto :okay1
echo test1 failed
set exception=1
:okay1
if %ret2% == 1 goto :okay2
if %ret2% == 0 goto :okay2
echo test2 failed
set exception=1
:okay2
if %ret3% == 1 goto :okay3
if %ret3% == 0 goto :okay3
echo test3 failed
set exception=1
:okay3
if %exception% == 1 goto :done
set same=1
if %ret1% == %ret2% goto :same12
set same=0
:same12
if %ret2% == %ret3% goto :same23
set same=0
:same23
if %same% == 1 goto :same123
echo results are not consistent
echo return values should all be 0 if ignoring FPEs (e.g. with IEEE754)
echo or all 1 if trapping FPEs
goto :cleanup
:same123
if %ret1% == 0 goto :allzero
echo results consistent: trapping floating exceptions
goto :cleanup
:allzero
echo results consistent: ignoring floating exceptions
grep -i nan temp$$ >NUL
if not errorlevel 1 goto :cleanup
echo but the library is not IEEE754 compatible
echo test 3 failed
:cleanup
del temp$$
:done
exit %exception%